home *** CD-ROM | disk | FTP | other *** search
/ Software 2000 / Software 2000 Volume 1 (Disc 2 of 2).iso / games / g037.dms / in.adf / BALLOON.AMOS / BALLOON.amosSourceCode next >
Encoding:
AMOS Source Code  |  1989-04-11  |  16.0 KB  |  687 lines

  1. Close Editor 
  2. Dim BUILD_SIZE(18,2)
  3. DR$="df0:"
  4. Global A1$,A2$,A3$,A4$,B2$,E1$,T1$,T2$,T3$,S1$,M2$,R1$,F$
  5. Global BUILD_SIZE(),BUILD_TOT,BUILD_HIT,BALLOONY,BALLOON_HIT
  6. Global LIGHTSOUT,SCORE,SAND,BALLOONS,HISCORE,NEW_HI,HINAME$,X1,Y1,LVL
  7. Do 
  8.    MAIN
  9. Loop 
  10. Procedure MAIN
  11.    SETCHAN
  12.    SETUP
  13.    Do 
  14.       SCORE_LOAD
  15.       BALLOON_PLAY
  16.       If NEW_HI
  17.          NEW_NAME
  18.          SCORE_SAVE
  19.       End If 
  20.       GAME_OVER
  21.    Loop 
  22. End Proc
  23. Procedure BOMBDROP
  24.    Bob 3,X Bob(1)-3,Y Bob(1),8
  25.    Channel 3 To Bob 3
  26.    Amal 3,B2$ : Amal On 3
  27. End Proc
  28. Procedure SOUND[X,N]
  29.    If X>0 and X<107
  30.       Sam Play %1,N,8363
  31.    Else 
  32.       If X>106 and X<212
  33.          Sam Play %10,N,8363
  34.          Sam Play %1,N,8363
  35.       Else 
  36.          Sam Play %10,N,8363
  37.       End If 
  38.    End If 
  39. End Proc
  40. Procedure BALLOON_UP
  41.    If Chanan(9)=False and SAND>0 and Y Bob(1)>76 and Chanmv(7)=False
  42.       Bob 9,X Bob(1),Y Bob(1),20
  43.       Channel 7 To Bob 1 : Channel 9 To Bob 9
  44.       Amal 7,A3$ : Amal On 7
  45.       Amal 9,S1$ : Amal On 9
  46.       BALLOONY=BALLOONY-16
  47.       Dec SAND
  48.       SAND_UPDATE
  49.    End If 
  50. End Proc
  51. Procedure BALLOON_DOWN
  52.    If Chanan(9)=False and Chanmv(7)=False and Y Bob(1)<200
  53.       Channel 7 To Bob 1
  54.       Amal 7,A4$ : Amal On 7
  55.       BALLOONY=BALLOONY+16
  56.    End If 
  57. End Proc
  58. Procedure DEFINE_ANIM
  59.    A1$=" Anim 0,(1,20)(2,5)(3,60) ;"
  60.    A1$=A1$+" Move -350,0,350 ;"
  61.    A2$=" Anim 0,(6,6)(7,6) ; Move 0,200,200"
  62.    A3$=" Move 0,-16,16"
  63.    A4$=" Move 0,16,48"
  64.    B2$=" Anim 0,(8,6)(9,6)(10,6) ; Move 0,200,75 "
  65.    E1$=" Anim 1,(11,3)(12,3)(13,3)(14,3)(15,3)(16,3)(17,3)(18,3)(19,3) "
  66.    T1$=" Anim 0,(26,10)(27,10); Move 350,0,150"
  67.    T2$=" Anim 0,(28,10)(29,10); Move 350,0,200"
  68.    T3$=" Anim 0,(30,20)(31,20); Move -390,0,390"
  69.    R1$=" Anim 0,(32,6)(33,6); Move -320,0,320 "
  70.    S1$=" Loop: Pause; Let RY=Y+3;Let Y=RY ; "
  71.    S1$=S1$+"Test: If RY<232 Jump Loop;"
  72.    S1$=S1$+"Anim 1,(21,7)(22,7)(23,7)"
  73.    M2$="Anim 1,(15,6)(16,6)(17,6)(18,6)(19,6)"
  74. End Proc
  75. Procedure SET_ZONES[X,HT,TYPE]
  76.    NUM=(X/16)+2
  77.    Reset Zone NUM
  78.    Set Zone NUM,X,HT To X+16,232
  79.    BUILD_SIZE(NUM-2,1)=HT : BUILD_SIZE(NUM-2,2)=TYPE
  80. End Proc
  81. Procedure SCAPE_DRAW[HT]
  82.    Colour 13,$995 : Ink 2,2,2 : Volume 40
  83.    Bob 2,-20,205,26 : Bob 3,-20,205,28
  84.    Channel(3) To Bob 3
  85.    Amal 2,T1$ : Amal On 2
  86.    Amal 3,T2$ : Amal On 3
  87.    Sam Loop On 
  88.    Sam Play %1,7,8363
  89.    Wait 75 : Amal Freeze : Wait 10
  90.    Sam Loop Off : Volume 10
  91.    BUILD_TOT=0
  92.    For X=15 To 287 Step 16
  93.       WHATBUILD=Rnd(2)
  94.       WHATBUILD=(WHATBUILD*6)+1
  95.       HEIGHT=(Rnd(HT)+1)
  96.       If HEIGHT>9 Then HEIGHT=9
  97.       For COUNT=0 To HEIGHT
  98.          BUILD=WHATBUILD+Rnd(3)
  99.          Inc BUILD_TOT
  100.          Paste Icon X,216-(COUNT*16),BUILD
  101.          Shoot : Wait 5
  102.       Next COUNT
  103.       Rem **** setup zones ****
  104.       NUM=(X/16)+2 : HGHT=(216-((COUNT-1)*16))
  105.       Reset Zone NUM
  106.       Set Zone NUM,X,HGHT To X+15,232
  107.       BUILD_SIZE(NUM-1,1)=HGHT : BUILD_SIZE(NUM-1,2)=WHATBUILD
  108.    Next X
  109.    Wait 50
  110.    For J=1 To 3
  111.       LIGHTS
  112.       Wait 15
  113.    Next J
  114.    Flash Off 
  115.    Colour 13,$FFB
  116.    Amal On 2 : Amal On 3 : Volume 40
  117.    Sam Loop On 
  118.    Sam Play %10,7,8363
  119.    While Chanmv(3) : Wend 
  120.    Volume 63
  121.    Sam Loop Off 
  122.    Bob Off 2 : Bob Off 3
  123. End Proc
  124. Procedure CHECK_HITS
  125.    If Chanmv(1)
  126.       X=Zone(X Bob(1),Y Bob(1))
  127.       If X>0
  128.          If X>1
  129.             BALLOON_CRASH
  130.          End If 
  131.       End If 
  132.    End If 
  133.    If Chanmv(10)
  134.       C=Bob Col(10,1 To 1)
  135.       If C
  136.          BALLOON_CRASH
  137.       Else 
  138.          C=Bob Col(10,3 To 3)
  139.          If C and Chanan(3)=True
  140.             B=I Bob(10)
  141.             If B>68 or B<55
  142.                BOMB_TO_MISSILE[10]
  143.             End If 
  144.          End If 
  145.       End If 
  146.    End If 
  147.    If Chanmv(2)
  148.       C=Bob Col(2,3 To 3)
  149.       If C and Chanan(3)=True
  150.          B=I Bob(2)
  151.          BOMB_TO_MISSILE[2]
  152.          If SAND<9
  153.             SAND_BONUS[B]
  154.          End If 
  155.       End If 
  156.    End If 
  157.    If Chanmv(15)
  158.       C=Bob Col(15,1 To 1)
  159.       If C
  160.          Bell(70)
  161.          Inc BALLOONS : BALLOON_UPDATE : Bob Off 15
  162.       End If 
  163.    End If 
  164.    For J=12 To 14
  165.       If Chanmv(J)
  166.          C=Bob Col(1,J To J)
  167.          If C
  168.             B=I Bob(J)
  169.             If B=53 or B=54
  170.                REPLENISH
  171.                Bob Off J
  172.             Else 
  173.                Bell(70)
  174.                If SAND<9
  175.                   Inc SAND : SAND_UPDATE : Bob Off J
  176.                End If 
  177.             End If 
  178.          End If 
  179.       End If 
  180.    Next J
  181.    If Chanmv(3)
  182.       If Not Chanan(4)
  183.          X=Zone(X Bob(3),Y Bob(3))
  184.          If X>0
  185.             If X>1
  186.                BOMB_BUILDING[X-1]
  187.             Else 
  188.                BOMB_GROUND
  189.             End If 
  190.          End If 
  191.       End If 
  192.    End If 
  193. End Proc
  194. Procedure REPLENISH
  195.    If Chanan(7)=False
  196.       Sam Play %1100,2,8363
  197.       Y=Y Bob(1)
  198.       Y=Y-63 : Y$=Str$(Y)
  199.       TEMP$=" Move 0,-"+Y$+","+Y$
  200.       Channel 7 To Bob 1
  201.       Amal 7,TEMP$ : Amal On 7
  202.       BALLOONY=BALLOONY-Y
  203.    End If 
  204. End Proc
  205. Procedure BANG[X]
  206.    Volume 50
  207.    Bob Off 3
  208.    Amal Off 3
  209.    Channel 4 To Bob 4
  210.    Amal 4,E1$ : Amal On 4
  211.    SOUND[X,1]
  212.    Volume 63
  213. End Proc
  214. Procedure BOMB_GROUND
  215.    Bob 4,X Bob(3),232,11
  216.    BANG[X Bob(3)]
  217.    For J=1 To 4
  218.       Screen Display 0,,35,,
  219.       Wait 1
  220.       Screen Display 0,,42,,
  221.       Wait 1
  222.    Next J
  223.    Wait 20
  224.    Bob Off 4
  225.    Amal Off 4
  226. End Proc
  227. Procedure BOMB_BUILDING[X]
  228.    X1=X Bob(3) : Y1=Y Bob(3)
  229.    Bob 4,X1,Y1,11
  230.    BANG[X Bob(3)]
  231.    XLOC=(X*16)
  232.    Paste Icon XLOC-1,BUILD_SIZE(X,1)-16,19
  233.    Paste Icon XLOC-1,BUILD_SIZE(X,1),(BUILD_SIZE(X,2)+4)+Rnd(1)
  234.    Add BUILD_SIZE(X,1),16
  235.    Reset Zone X+1
  236.    If BUILD_SIZE(X,1)<230
  237.       Set Zone X+1,XLOC,BUILD_SIZE(X,1) To XLOC+16,232
  238.    End If 
  239.    Wait 1 : Rem **** falls through while without wait!   
  240.    Rem *** check if buildings cleared *** 
  241.    Add SCORE,3 : SCORE_UPDATE
  242.    Inc BUILD_HIT
  243.    Bob Off 4
  244.    Amal Off 4
  245.    Wait 4 : Rem *** reload time
  246. End Proc
  247. Procedure SAND_BONUS[B]
  248.    S=11
  249.    Repeat 
  250.       Inc S
  251.    Until Chanmv(S)=False or S=15
  252.    If S<15
  253.       R=Rnd(3)
  254.       If R=3 and(B=51 or B=52)
  255.          Bob S,X1,Y1-20,53
  256.          RANGE=1000
  257.       Else 
  258.          Bob S,X1,Y1,36
  259.          RANGE=500
  260.       End If 
  261.       Channel S To Bob S
  262.       SPEED$=Str$(Rnd(1000)+RANGE)
  263.       If R=3 and(B=51 or B=52)
  264.          Amal S,"Anim 0,(53,20)(54,20);Move 0,-255,"+SPEED$
  265.       Else 
  266.          Amal S,"Move 0,-250,"+SPEED$ : Amal On S
  267.       End If 
  268.       Amal On S
  269.    End If 
  270. End Proc
  271. Procedure BALLOON_BONUS
  272.    If Chanmv(15)=False
  273.       Bob 15,X1,Y1,37
  274.       Channel 15 To Bob 15
  275.       SPEED$=Str$(Rnd(1000)+500)
  276.       SPEED$=Mid$(SPEED$,2,Len(SPEED$))
  277.       Amal 15,"Move 0,-250,"+SPEED$ : Amal On 15
  278.    End If 
  279. End Proc
  280. Procedure BALLOON_CRASH
  281.    BALLOON_HIT=True
  282.    X=X Bob(1) : Y=Y Bob(1)
  283.    Bob Off 1 : Bob Off : Bob Off 10 : Bob 5,X,Y,1
  284.    SOUND[X,4] : Bob 11,X+3,Y-5,15
  285.    Channel 11 To Bob 11 : Amal 11,M2$ : Amal On 11
  286.    Wait 10 : Bob Off 11 : Bob 5,X,Y,4 : Wait 5
  287.    Bob 5,X,Y,5 : Wait 5 : Bob 5,X,Y,6
  288.    Channel 5 To Bob 5 : Amal 5,A2$ : Amal On 5
  289.    Repeat 
  290.    Until Y Bob(5)>225
  291.    X=X Bob(5) : Bob Off 5 : Bob 4,X,232,6
  292.    For K=0 To 5
  293.       Bob 6,X+5,232-(K*5),11
  294.       SOUND[X,1]
  295.       Channel 6 To Bob 6 : Amal 6,E1$ : Amal On 6
  296.       For J=1 To 4
  297.          Screen Display 0,,35,, : Wait 1
  298.          Screen Display 0,,42,, : Wait 1
  299.       Next J
  300.    Next K
  301.    While Chanmv(6)=True : Wend 
  302.    Bob Off 4 : Bob Off 6 : Amal Off 6
  303. End Proc
  304. Procedure BOMB_TO_MISSILE[B]
  305.    X1=X Bob(3) : Y1=Y Bob(3)
  306.    Bob Off 3 : Bob Off B
  307.    Bob 11,X1,Y1+5,15
  308.    Channel 11 To Bob 11
  309.    Amal 11,M2$ : Amal On 11
  310.    Boom 
  311.    Wait 5
  312.    While Chanan(11)
  313.    Wend 
  314.    Bob Off 11
  315.    Amal Freeze 
  316.    If B=10
  317.       For J=1 To 25
  318.          Add SCORE,5
  319.          SCORE_UPDATE
  320.          Bell(40)
  321.       Next J
  322.    End If 
  323.    Amal On 
  324. End Proc
  325. Procedure _GET_READY
  326.    For Y=270 To 25 Step -1
  327.       Bob 6,100,Y,25
  328.    Next Y
  329.    Wait 70
  330.    For Y=25 To 270
  331.       Bob 6,100,Y,25
  332.    Next Y
  333.    Bob Off 6
  334. End Proc
  335. Procedure LIGHTS
  336.    F1$="(FFB,"+Mid$(Str$(Rnd(10)+5),2,2)+")(996,"+Mid$(Str$(Rnd(10)+5),2,2)+")"
  337.    Flash 13,F1$
  338. End Proc
  339. Procedure LVL_DONE
  340.    While Chanmv(4)=True : Wend 
  341.    Wait 30
  342.    SOUND[(X Bob(1)),3]
  343.    Volume 30
  344.    Sam Play %1100,2,8363
  345.    Amal Off 
  346.    While Y Bob(1)>-3
  347.       Bob 1,X Bob(1),Y Bob(1)-2,1
  348.       Wait 2
  349.    Wend 
  350.    Wait 10
  351.    BUILD_CLEAR
  352. End Proc
  353. Procedure BUILD_CLEAR
  354.    Ink 2,2,2 : Flash Off : Colour 31,$996
  355.    Volume 63
  356.    Bob 5,340,202,30
  357.    Channel(5) To Bob 5
  358.    Amal 5,T3$ : Amal On 5 : Wait 35
  359.    Sam Play %10,6,8363
  360.    Bob 6,X Bob(5)-5,232,32
  361.    Amal 6,R1$ : Amal On 6
  362.    While Chanmv(5)
  363.       Screen Swap 
  364.       Bar X Bob(5)-5,210 To X Bob(5)+5,231
  365.       If X Bob(5)>150
  366.          If Rnd(2)=2
  367.             Sam Play %10,6,5000+(Rnd(3000))
  368.          End If 
  369.       Else 
  370.          If Rnd(2)=2
  371.             Sam Play %1,6,5000+(Rnd(3000))
  372.          End If 
  373.       End If 
  374.       Wait 7
  375.    Wend 
  376.    Bob Off 5 : Bob Off 6 : Amal Off 
  377.    Wait 50
  378. End Proc
  379. Procedure BALLOON_UPDATE
  380.    Ink 1,0
  381.    T$=Right$(Str$(BALLOONS),Len(Str$(BALLOONS))-1)
  382.    Text 296,11,T$
  383. End Proc
  384. Procedure LVL_UPDATE[LVL]
  385.    Ink 1,0
  386.    T$=Right$(Str$(LVL),Len(Str$(LVL))-1)
  387.    Text 35,11,T$
  388. End Proc
  389. Procedure WIPE_SCORES
  390.    Ink 1,0
  391.    Text 35,11,"  "
  392.    Text 95,11,"    "
  393.    Text 148,11,"    "
  394.    Text 218,11," "
  395.    Text 296,11,"  "
  396. End Proc
  397. Procedure SCORE_UPDATE
  398.    Ink 1,0
  399.    T$=Right$(Str$(SCORE),Len(Str$(SCORE))-1)
  400.    Text 95,11,T$
  401.    If SCORE>HISCORE
  402.       HISCORE=SCORE
  403.       HISCORE_UPDATE
  404.       NEW_HI=True
  405.    End If 
  406.    If SCORE mod 2000=0
  407.       BALLOON_BONUS
  408.    End If 
  409. End Proc
  410. Procedure HISCORE_UPDATE
  411.    Ink 1,0
  412.    T$=Right$(Str$(HISCORE),Len(Str$(HISCORE))-1)
  413.    Text 148,11,T$
  414. End Proc
  415. Procedure SAND_UPDATE
  416.    Ink 1,0
  417.    T$=Right$(Str$(SAND),Len(Str$(SAND))-1)
  418.    Text 218,11,T$
  419. End Proc
  420. Procedure LAUNCH_MISSILE
  421.    Randomize Timer
  422.    RANGE=140
  423.    R=Rnd(4)
  424.    If R=3 Then RANGE=100
  425.    Y=Rnd(RANGE)+60
  426.    Bob 10,-30,Y,34
  427.    Channel 10 To Bob 10
  428.    If R=0 and LVL>6
  429.       M1$="Anim 0,(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  430.       M1$=M1$+"(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  431.       M1$=M1$+"(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  432.       M1$=M1$+"(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  433.       M1$=M1$+"(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  434.       M1$=M1$+"(55,2)(56,2)(57,2)(58,2)(59,2)(60,2)(61,2)"
  435.       M1$=M1$+"(62,2)(63,2)(64,2)(65,2)(66,2)(67,2)(68,2)"
  436.       M1$=M1$+"; Move 370,0,600"
  437.    Else 
  438.       If R=1
  439.          M1$="Anim 0,(40,6)(41,6) ; Move 370,0,150"
  440.       Else 
  441.          If R=2
  442.             M1$="Anim 0,(34,6)(35,6) ; Move 370,0,150"
  443.          Else 
  444.             M1$="Anim 0,(44,2)(45,2)(46,2)(47,2)(48,2)(49,2)(50,2)"
  445.             M1$=M1$+"(49,2)(48,2)(47,2)(46,2)(45,2) ; Move 370,0,150"
  446.          End If 
  447.       End If 
  448.    End If 
  449.    Amal 10,M1$ : Amal On 10
  450. End Proc
  451. Procedure TRUCK
  452.    Randomize Timer
  453.    RANGE=150
  454.    Volume 40
  455.    R=Rnd(5)
  456.    If R>1
  457.       Bob 2,340,202,30
  458.    Else 
  459.       Bob 2,-20,205,27
  460.    End If 
  461.    Channel 2 To Bob 2
  462.    Restore T
  463.    For J=0 To R
  464.       Read T$
  465.    Next J
  466.    If R=5 Then RANGE=150
  467.    T$=T$+Mid$(Str$(Rnd(RANGE)+50),2,3)
  468.    Amal 2,T$ : Amal On 2
  469.    T:
  470.    Data " Anim 0,(26,10)(27,10); Move 350,0,"
  471.    Data " Anim 0,(28,10)(29,10); Move 350,0,"
  472.    Data " Anim 0,(30,20)(31,20); Move -390,0,"
  473.    Data " Anim 0,(38,8)(39,8); Move -390,0,"
  474.    Data " Anim 0,(42,8)(43,8); Move -390,0,"
  475.    Data " Anim 0,(51,8)(52,8); Move -390,0,"
  476. End Proc
  477. Procedure GAME_OVER
  478.    For B=1 To 4
  479.       Bob B,135,90,24
  480.    Next B
  481.    Amal 1,"Move -190,0,23"
  482.    Amal 2,"Move 190,0,23"
  483.    Amal 3,"Move 0,-140,17"
  484.    Amal 4,"Move 0,170,17"
  485.    While Not Fire(1) : Wend 
  486.    Bob 5,160,125,15
  487.    Amal 5,M2$ : Shoot : Amal On 5
  488.    Amal On 1 : Amal On 2 : Amal On 3 : Amal On 4
  489.    Wait 1 : While Chanmv(4) : Wend 
  490.    For J=1 To 5
  491.       Bob Off J
  492.    Next J
  493.    Wait 50
  494. End Proc
  495. Procedure BUILDING_LIGHTS
  496.    If BUILD_HIT>(BUILD_TOT/2) and LIGHTSOUT=False
  497.       If Rnd(3)=1
  498.          LIGHTS
  499.       Else 
  500.          If Rnd(15)=1
  501.             Flash Off 
  502.             Colour 13,$FFB
  503.             Flash 31,F$
  504.          End If 
  505.       End If 
  506.    End If 
  507.    If BUILD_HIT>((BUILD_TOT/4)*3) and LIGHTSOUT=False
  508.       LIGHTS
  509.       Flash Off 
  510.       Colour 13,$996
  511.       Flash 31,F$
  512.       LIGHTSOUT=True
  513.    End If 
  514. End Proc
  515. Procedure NEW_NAME
  516.    Synchro Off 
  517.    Flash Off 
  518.    Colour 31,$686
  519.    Amal Off 
  520.    For B=1 To 16
  521.       Bob Off B
  522.    Next B
  523.    Wait 60
  524.    Sam Play 11,2,8363
  525.    Get Cblock 1,80,64,160,96
  526.    Paste Icon 85,66,22
  527.    Ink 29,30
  528.    L=Text Length(HINAME$)
  529.    Text 150-L/2,101,HINAME$+"�S"
  530.    X=12 : Y=16 : HINAME$=""
  531.    Repeat 
  532.       K$=""
  533.       K$=Inkey$
  534.       If K$>""
  535.          If Asc(K$)<>13
  536.             If Asc(K$)=8 and X>12
  537.                X=X-1
  538.                HINAME$=Left$(HINAME$,(Len(HINAME$)-1))
  539.                Text 105,134,HINAME$+" "
  540.             Else 
  541.                If X<25
  542.                   K$=Upper$(K$)
  543.                   HINAME$=HINAME$+K$
  544.                   Text 105,134,HINAME$
  545.                   X=X+1
  546.                End If 
  547.             End If 
  548.          End If 
  549.       End If 
  550.    Until Asc(K$)=13
  551.    If HINAME$="" Then HINAME$=" "
  552.    Put Cblock 1,80,64
  553.    Screen Swap 
  554.    Put Cblock 1,80,64
  555.    Screen Swap 
  556.    Synchro On 
  557. End Proc
  558. Procedure PAUSE
  559.    Amal Freeze : K$=""
  560.    Bob 15,-100,70,69
  561.    For J=-100 To 110
  562.       Bob 15,J,70,69
  563.    Next J
  564.    Repeat 
  565.       K$=Inkey$
  566.    Until Asc(K$)=32
  567.    For J=110 To 400
  568.       Bob 15,J,70,69
  569.    Next J
  570.    Bob Off 15
  571.    Amal On : K$=""
  572. End Proc
  573. Procedure BALLOON_PLAY
  574.    BALLOONS=6 : SAND=9 : SCORE=0 : YINC=10 : HT=2 : LVL=0
  575.    GAME_END=False : Ink 2,2,2 : Bar 0,41 To 319,231 : WIPE_SCORES
  576.    While GAME_END=False
  577.       BALLOONX=330 : BALLOONY=53
  578.       Bob 1,BALLOONX,BALLOONY,1
  579.       BUILD_HIT=0
  580.       LIGHTSOUT=False : FINISHED=False : BALLOON_HIT=False
  581.       Inc HT : Inc LVL
  582.       If HT>7 Then HT=HT+(HT/2)
  583.       SCAPE_DRAW[HT]
  584.       Flash 31,F$
  585.       BALLOON_UPDATE
  586.       LVL_UPDATE[LVL]
  587.       SAND_UPDATE
  588.       SCORE_UPDATE
  589.       HISCORE_UPDATE
  590.       _GET_READY
  591.       While Not FINISHED
  592.          Add BALLOONY,YINC
  593.          Bob 1,BALLOONX,BALLOONY,1
  594.          Channel 1 To Bob 1
  595.          Amal 1,A1$
  596.          Amal On 1
  597.          While Chanmv(1)
  598.             K$=Inkey$
  599.             If Asc(K$)=32 Then PAUSE
  600.             If Fire(1) and Chanmv(3)=False
  601.                BOMBDROP
  602.             End If 
  603.             If Jup(1)
  604.                BALLOON_UP
  605.             Else 
  606.                If Jdown(1)
  607.                   BALLOON_DOWN
  608.                End If 
  609.             End If 
  610.             CHECK_HITS
  611.             If BALLOON_HIT=True
  612.                Dec BALLOONS
  613.                BALLOON_UPDATE
  614.                If BALLOONS>0
  615.                   Add BALLOONY,-(YINC*3)
  616.                   BALLOON_HIT=False
  617.                   _GET_READY
  618.                End If 
  619.             End If 
  620.             If BALLOONS=0
  621.                FINISHED=True : GAME_END=True
  622.             End If 
  623.             If BUILD_HIT=BUILD_TOT
  624.                Bob Off 12 : Bob Off 13 : Bob Off 14 : Bob Off 10 : Bob Off 2
  625.                LVL_DONE
  626.                FINISHED=True
  627.             Else 
  628.                If Chanmv(10)=False and Chanan(2)=False and Chanmv(2)=False and Chanmv(1)=True
  629.                   R=Rnd(1)
  630.                   If R=1
  631.                      If(X Bob(1)>250) and Rnd(100)=1
  632.                         LAUNCH_MISSILE
  633.                      End If 
  634.                   Else 
  635.                      If Rnd(50)=1
  636.                         TRUCK
  637.                      End If 
  638.                   End If 
  639.                End If 
  640.             End If 
  641.             If Chanmv(9)=False and Chanan(9)=False
  642.                Bob Off 9
  643.             End If 
  644.             If Chanmv(2)=False
  645.                Bob Off 2
  646.             End If 
  647.             If Chanmv(10)=False
  648.                Bob Off 10
  649.             End If 
  650.             BUILDING_LIGHTS
  651.          Wend : Rem **** balloon loop
  652.       Wend : Rem **** life lost 
  653.    Wend : Rem **** game end
  654. End Proc
  655. Procedure SETUP
  656.    Screen Open 0,320,256,32,Lowres
  657.    Hide : Hide 
  658.    Curs Off 
  659.    Flash Off 
  660.    Unpack 6 To 0
  661.    Double Buffer 
  662.    Screen Show 0
  663.    Get Palette 0
  664.    Reserve Zone 25
  665.    Set Zone 1,0,230 To 319,255
  666.    DEFINE_ANIM
  667.    F$="(0EE,2)(2EE,2)(4EE,2)(6EE,2)(8EE,2)(AEE,2)(CEE,2)"
  668.    F$=F$+"(EEE,2)(CEE,2)(AEE,2)(8EE,2)(6EE,2)(4EE,2)(2EE,2)"
  669. End Proc
  670. Procedure SCORE_LOAD
  671.    NEW_HI=False
  672.    Open In 1,"df0:data/hiscore.dat"
  673.    Input #1,HINAME$
  674.    Input #1,HISCORE
  675.    Close 1
  676. End Proc
  677. Procedure SCORE_SAVE
  678.    Open Out 1,"df0:data/hiscore.dat"
  679.    Print #1,HINAME$
  680.    Print #1,HISCORE
  681.    Close 1
  682. End Proc
  683. Procedure SETCHAN
  684.    For C=1 To 15
  685.       Channel C To Bob C
  686.    Next C
  687. End Proc